package cn.myframe.log;

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import com.baomidou.mybatisplus.annotations.TableId;
import org.slf4j.LoggerFactory;

import java.lang.reflect.Field;
import java.util.List;

/**
 * 日志工具类
 * 
 * @author ynz
 * @email ynz@myframe.cn
 * @date 2018年9月18日 上午11:54:16
 */
public class LogUtils {

	/**
	 * 通过@TableId注解获取对象主键的值
	 * @param obj
	 * @return
	 */
	public static Object getKeyValue(Object obj){
		Class<?> clz = obj.getClass();
		Object value = null;
		Field[] fields = clz.getDeclaredFields();  
		for(Field field : fields){  
			boolean fieldHasAnno = field.isAnnotationPresent(TableId.class);  
			 if(fieldHasAnno){ 
				 try {
					field.setAccessible(true); // 设置些属性是可以访问的
					value = field.get(obj);
				} catch (Exception e) {
					e.printStackTrace();
				} 
			 }
		}
		return value;
	}

	/**
	 * 修改日志等级
	 * @param level
	 */
	public static void setAllLogLevel(String level){
		LoggerContext loggerContext= (LoggerContext) LoggerFactory.getILoggerFactory();
		List<Logger> loggerList = loggerContext.getLoggerList();
		for(Logger logger : loggerList){
			if(logger.getName().indexOf("myframe")>0||
					logger.getName().indexOf("org.springframework.web")>0||
					logger.getName().indexOf("org.springboot.sample")>0||
					logger.getName().indexOf("DispatcherServlet")>0||
					logger.getName().indexOf("RequestMappingHandlerMapping")>0||
					logger.getName().indexOf("RequestResponseBodyMethodProcessor")>0||
					logger.getName().indexOf("SimpleUrlHandlerMapping")>0||
					logger.getName().indexOf("DefaultCorsProcessor")>0){
				logger.setLevel(Level.toLevel(level));
			}
		}
	}
}
